<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.变量提升：a的变量声明提到最前面，但是没有包括赋值操作
        console.log(a); //undefined
        var a = 3
        // 相当于以下代码
        // var a
        // console.log(a);
        // a = 3

        // 2.函数表达式的变量提升
        fn1() //报错，因为没有定义fn1,相当于undefined
        var fn1 = function(){
            console.log("调用了fn1");
        }

        // 3.函数提升：fn2先声明，相当于C里面的函数声明
        fn2()
        function fn2() {
            console.log('调用了fn2');
        }
    </script>
</body>

</html>